package com.totoro.tymapping.executor.slotparse.impl;

import com.totoro.tymapping.executor.slotparse.SlotParseExecutor;
import org.bukkit.entity.Player;

import java.util.List;

/**
 * @author Totoro
 * @version 0.1.0
 * @date 2025/8/13 - 15:55
 * @description
 **/
public class MinecraftExecutor implements SlotParseExecutor {
    @Override
    public Boolean execute(String slot, List<String> condition, Player player) {
        // 获取最终槽位
        String finalSlot = getFinalSlot(slot);
        // 检测槽位是否正确，如果不正确直接返回false
        if (!isMinecraftSlot(finalSlot)) {
            return false;
        }
        // 获取最终条件
        condition = getSlotCondition(condition);
        // 将finalSlot转为int
        int slotNum = Integer.parseInt(finalSlot);
        return doParseValue(condition, player.getInventory().getItem(slotNum), player);
    }

    /**
     * 判断字符串是否是整数且该整数在0-36之间
     * @param str 要检查的字符串
     * @return 如果是0-36之间的整数返回true，否则返回false
     */
    private boolean isMinecraftSlot(String str) {
        // 检查字符串是否为空
        if (str == null || str.trim().isEmpty()) {
            return false;
        }

        try {
            // 尝试将字符串转换为整数
            int num = Integer.parseInt(str);
            // 检查是否在0-36之间（包含边界值）
            return num >= 0 && num <= 36;
        } catch (NumberFormatException e) {
            // 转换失败，不是整数
            return false;
        }
    }
}
